5
תגובות
אני מנסה להכין ביטוי רגולרי בשתי חלקים:
חלק ראשון יכול להכיל כל תו והחלק השני יכול להכיל כל תו חוץ מ*(כוכבית)

דוגמאות:
<?php
 
  function phpguide_help($part1, $part2){
    return preg_match("/??????/", "{$part1}{$part2}");
  }
 
  phpguide_help("ergjnjkle", "aregk34"); //need true
  phpguide_help("!*gj*jkle", "aregk34"); //need true
  phpguide_help("e*gjnjk*e", "are*k34"); //need false (part2 heve *)
  phpguide_help("", ""); //need true
 
 
  //my test, but i cant know what to do.........
  function phpguide_help_my_test($part1, $part2){
    return preg_match("/^{$part1}[%PROBLEM_HERE%]$/", "{$part1}{$part2}"); //<-- [%PROBLEM_HERE%]
  }


מקווה שהבנתם אותי, קשה לי להסביר.

5 תשובות

avatar ענה משתמש_218762 ב 23 למאי 2012 #

חשבתי על זה קצת יותר, וזה צריך להיות ככה:

$array = array(
    'foo*bar*mmf',
    'foo*bar*mmf*clo',
    'foo*bar*mmf*mnm',
    'foo*bar*mmf*clo*ff',
    'foo*bar*mmf*clo*bby',
    'foo*bar*mmf*mnm*free',
    'foo*bar*mmf*mnm*size',
  );
 
  function phpguide_help($str, $startRegex){
    return preg_match("/^{$startRegex}[HERE]$/", $str); //[HERE] = Any but *
  }
 
  foreach($array as $str){
    if(phpguide_help($str, "foo*bar*mmf*")){
      echo ":{$str}\n";
    }
  }
  /*
    need to print:
    :foo*bar*mmf*clo
    :foo*bar*mmf*mnm
  */

אבל זה עדיין לא פותר ת'בעיה :\

avatar ענה משתמש_219212 ב 23 למאי 2012 #

avatar ענה iiddaannyy ב 23 למאי 2012 #

כדי למצוא הכל חוץ מכוכבית:

/[^\*]/

avatar ענה משתמש_220998 ב 23 למאי 2012 #

הביטוי הרגולרי לא יודע להבדיל איפה נגמר החלק הראשון ואיפה מתחיל השני.
או שאתה מכניס איזה הפרדה ביניהם או שאתה עושה שני ביטויים רגולריים (וגם אז ייצא שהביטוי הראשון מיותר. למה לבדוק כל תו אם גם ככה מותר הכל).
את הביטוי השני עידן כתב למעלה.

avatar ענה משתמש_218762 ב 23 למאי 2012 #

@iiddaannyy
תודה!
@משתמש_220998
מצאתי דרך יותר טובה לעשות את זה (הוספתי מפתוחת למערך ושינתי כמה פונקציות), תודה.